/*
 * TMap Designer - A Thematic Map design software
 * Copyright (C) 2006 World Health Organization
 * http://www.who.int
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
package who.tmap.bo.cd.point.impl;

import java.awt.Color;
import java.awt.Image;
import java.util.Comparator;

import who.tmap.bo.cd.point.CDPointDataDrivenEntry;
import who.tmap.toolkit.shape.annotation.impl.ImageHelper;

@SuppressWarnings("unchecked")
public class CDPointDataDrivenEntryImpl extends BaseCDPointImpl implements CDPointDataDrivenEntry, Comparator {

	private String val;
	private int symbol;
	private int size;
	private int fillPattern;
	private Color color;
	
	private ImageHelper imageHelper =new ImageHelper();
	
	public CDPointDataDrivenEntryImpl() {
		super();
	}
	
	public boolean equals(Object obj) {
		boolean eq =false;
		CDPointDataDrivenEntryImpl other =(CDPointDataDrivenEntryImpl)obj;
		
		eq = symbol == other.symbol && size == other.size && fillPattern == other.fillPattern;
		
		if ( eq ) {
			if ( color != null ) {
				if ( other.color != null ) {
					eq =color.equals( other.color );
				} else {
					eq =false;
				}
			} else if ( other.color != null ){
				eq =false;
			}
			
			if ( eq ) {
				if ( val != null ) {
					if ( other.val != null ) {
						eq =val.equals( other.val );
					} else {
						eq =false;
					}
				} else if ( other.val != null ){
					eq =false;
				}
			}
		}
		
		return eq;
	}

	public int compare(Object o1, Object o2) {
		if (  o1.equals( o2 ) ) {
			return 0;
		} else {
			return 1;
		}
	}	
	
	public Color getColor() {
		return color;
	}
	
	public void setColor(Color color) {
		this.color = color;
	}
	
	public int getFillPattern() {
		return fillPattern;
	}
	
	public void setFillPattern(int fillPattern) {
		this.fillPattern = fillPattern;
	}
	
	public int getSize() {
		return size;
	}
	
	public void setSize(int size) {
		this.size = size;
	}
	
	public int getSymbol() {
		return symbol;
	}
	
	public void setSymbol(int symbol) {
		this.symbol = symbol;
	}
	
	public String getVal() {
		return val;
	}
	
	public void setVal(String val) {
		this.val = val;
	}
	
	public Image getImage() {
		return imageHelper.getImage();
	}

	public byte[] getImageBytes() {
		return imageHelper.getImageBytes();
	}

	public void setImage(Image image) {
		imageHelper.setImage( image );
	}

	public void setImageBytes(byte[] imageBytes) {
		imageHelper.setImageBytes( imageBytes );
	}	
	
}
